100 REM ******* 6510 SIMULATOR ******** 110 DATA ASL,BRK,CLC,CLD,CLI,CLV,DEX,DEY,INX,INY,LSR,NOP,PHA,PHP,PLA 120 DATA PLP,ROL,ROR,RTI,RTS,SEC,SED,SEI,TAX,TAY,TSX,TXA,TXS,TYA 130 DATA ADC,AND,CMP,CPX,CPY,EOR,LDA,LDX,LDY,ORA,SBC 140 DATA ADC,AND,ASL,BCC,BCS,BEQ,BIT,BMI,BNE,BPL,BVC,BVS,CMP,CPX,CPY 150 DATA DEC,EOR,INC,JMP,JSR,LDA,LDX,LDY,LSR,ORA,ROL,ROR,SBC,STA,STX 160 DATA STY,ASL,LSR,ROL,ROR 170 DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 180 DATA 0000,0001,0010,0011,0100,0101,0110,0111 190 DATA 1000,1001,1010,1011,1100,1101,1110,1111 200 DIM HEX$(8),BIT$(8),H$(16),B$(16),TEMP$(2),BIT(8),N$(75) 210 AH$="00":XH$="00":YH$="00":Z$="0":AD=0:SC=0:YD=0 220 AB$="00000000":XB$="00000000":YB$="00000000" 230 N=0:V=0:B=0:D=0:I=0:Z=0:C=0 240 IF RIGHT$(A$,1)=" "THEN 300:REM TYPE A SPACE BETWEEN THE QUOTES 250 FOR L=1 TO 75:READ N$(L):NEXT L 260 FOR L=1 TO 16:READ H$(L):NEXT L:FOR L=1 TO 16:READ B$(L):NEXT L 270 PRINT "[147]":POKE53280,0:POKE53281,6:POKE646,1 280 PRINT " N V - B D I Z C" 285 PRINT N;V;" - ";B;D;I;Z;C:PRINT 290 PRINT "A: ";AH$;" X: ";XH$;" Y: ";YH$ 295 PRINT AB$;" ";XB$;" ";YB$:PRINT 300 B=0:A$="":INPUT " ";A$:REM TYPE SPACE BETWEEN SECOND PAIR OF QUOTES 320 IF LEN(A$)<3 OR LEN(A$)>10 THEN 300 330 IF LEN(A$)=3 THEN 420:REM GO TO IMPLIED-ADDRESS ROUTINES 340 IF MID$(A$,4,1)<>CHR$(32) THEN 300 350 IF RIGHT$(A$,1)=CHR$(32) THEN 300 360 GOTO 450:REM GO TO IMMEDIATE- AND ABSOLUTE-ADDRESS ROUTINES 370 REM *** ROUTINE TO CONVERT OP$ & AD$ TO BINARY NUMBERS *** 380 OD$=OP$:GOSUB 1130:FOR L=1 TO 8:BIT$(L)=Z$:NEXT L 390 FOR L=1 TO 8:B1$(L)=MID$(OB$,L,1):NEXT L 400 FOR L=1 TO 8:B2$(L)=MID$(AB$,L,1):NEXT L:RETURN 410 REM *** IMPLIED-ADDRESSING ROUTINES *** 420 FOR L=1 TO 29:IF A$=N$(L) THEN OC$=A$:OC=L:GOTO 1350 430 NEXT L:GOTO 300 440 REM *** IMMEDIATE, ABSOLUTE & ACCUMULATOR ADDRESS MODES *** 450 OC$=LEFT$(A$,3):OP$=MID$(A$,5) 460 IF LEFT$(OP$,1)="#" AND MID$(OP$,2,1)="$" THEN FLAG$="AH":GOTO 530 470 IF LEFT$(OP$,1)="#" THEN FLAG$="AD":GOTO 620 480 IF LEFT$(OP$,1)="$" THEN FLAG$="IH":GOTO 690 490 IF OP$="A" THEN 790 500 IF LEFT$(OP$,1)<"0" AND LEFT$(OP$,1)>"9" THEN 300:REM TRY AGAIN 510 FLAG$="ID":GOTO 840 520 REM *** HEX OPERAND, ABSOLUTE ADDRESS *** 530 OP$=MID$(OP$,3) 540 FOR L=30 TO 40:IF OC$=N$(L) THEN OC=L:GOTO 560 550 NEXT L:GOTO 300 560 IF LEN(OP$)>2 THEN 300 570 FOR L=1 TO LEN(OP$):X$=MID$(OP$,L,1):IF X$"F" THEN 300 580 IF X$>"9"AND X$<"A" THEN 300 590 IF LEN(OP$)=1 THEN OP$=Z$+OP$ 600 OH$=OP$:GOSUB 1030:OP$=OD$:GOTO 670 610 REM *** DECIMAL OPERAND, ABSOLUTE ADDRESSING *** 620 OP$=MID$(OP$,2) 630 FOR L=30TO 40:IF OC$=N$(L) THEN OC=L:GOTO 650 640 NEXT L:GOTO 300 650 IF VAL(OP$)>255 THEN 300 660 FOR L=1 TO LEN(OP$):X$=MID$(OP$,L,1):IFASC(X$)<48 OR ASC(X$)>57 THEN 420 670 OC=OC-29:GOTO 1420 680 REM *** HEX OPERAND, IMMEDIATE ADDRESS *** 690 OP$=MID$(OP$,2) 700 FOR L=41 TO 71:IF OC$=N$(L) THEN OC=L:GOTO720 710 NEXT L:GOTO 300 720 IF LEN(OP$)>4 THEN 300 730 FOR L=1 TO LEN(OP$):X$=MID$(OP$,L,1):IF X$"F" THEN 300 740 IF X$>"9" AND X$<"A" THEN 300 750 NEXT L 760 OH$=OP$:GOSUB 1030:OP$=OD$:OP$=STR$(PEEK(VAL(OP$))) 770 OC=OC-40:GOTO 1430 780 REM *** ACCUMULATOR ADDRESSING *** 790 OP$="A" 800 FOR L=72 TO75:IF OC$=N$(L) THEN OC=L-71: GOTO 820 810 NEXT L:GOTO 300 820 ON OC GOTO 1510,1760,1790,1810 830 REM *** DECIMAL OPERAND, IMMEDIATE ADDRESS ** 840 IF VAL(OP$)>65535 THEN 300 860 FOR L=1 TO LEN(OP$):X$=MID$(OP$,L,1):IF ASC(X$)<48 OR ASC(X$)>57 THEN 300 870 FOR L=41 TO 71:IF OC$=N$(L) THEN OC=L:GOTO 890 880 NEXT L:GOTO 300 890 OP$=STR$(PEEK(VAL(OP$))) 900 OC=OC-40:GOTO 1430 910 REM *** DECIMAL-TO-HEXADECIMAL CONVERSION *** 920 FOR L=1 TO 4:HEX$(L)="":NEXT L 930 FOR L=1 TO 5:T$=RIGHT$(OD$,L):NEXT L 940 NR=VAL(OD$):X=4 950 TMP=NR:NR=INT(NR/16):TMP=TMP-NR*16 960 IF TMP<10 THEN HEX$(X)=RIGHT$(STR$(TMP),1):GOTO 980 970 HEX$(X)=CHR$(TMP-10+ASC("A")) 980 IF NR<>0 THEN X=X-1:GOTO 950 990 OH$=HEX$(1)+HEX$(2)+HEX$(3)+HEX$(4) 1000 IF LEN(OH$)=1 THEN OH$=Z$+OH$ 1010 RETURN 1020 REM *** HEXADECIMAL-TO-DECIMAL CONVERSION *** 1030 NR=0:FOR L=1 TO LEN(OH$):HEX$(L)=MID$(OH$,L,1) 1040 IF HEX$(L)<="9" THEN NR=NR*16+VAL(HEX$(L)):GOTO 1060 1050 NR=NR*16+ASC(HEX$(L))-ASC("A")+10 1060 NEXT L:OD$=STR$(NR):RETURN 1070 REM *** BINARY-TO-DECIMAL CONVERSION *** 1080 FOR L=8 TO 1 STEP -1:B$(L)=MID$(OB$,L,1):NEXT L 1090 FOR L=1 TO 8:BIT(L)=VAL(B$(L)):NEXT L:OD=0:NR=256 1100 FOR L=1 TO8:NR=NR/2:OD=OD+BIT(L)*NR:NEXT L 1110 OD$=STR$(OD):RETURN 1120 REM *** DECIMAL-TO-BINARY CONVERSION *** 1130 OD=VAL(OP$):FOR L=8 TO 1 STEP -1:TMP=OD/2:NR=TMP-INT(TMP) 1140 IF NR=0 THEN BT$(L)=Z$:GOTO 1160 1150 BT$(L)="1" 1160 OD=INT(TMP):NEXT L 1170 OB$=BT$(1)+BT$(2)+BT$(3)+BT$(4)+BT$(5)+BT$(6)+BT$(7)+BT$(8):RETURN 1180 REM *** HEX-TO-BINARY CONVERSION *** 1190 HEX$(1)="":HEX$(2)="":FOR L=1 TOLEN (OH$):HEX$(L)=MID$(OH$,L,1) 1200 NEXT L:IF HEX$(2)="" THEN HEX$(2)=HEX$(1):HEX$(1)=Z$ 1210 FOR L=1 TO 16:IF HEX$(1)=H$(L) THEN BIT$(1)=B$(L) 1220 NEXT L:FOR L=1 TO 16:IF HEX$(2)=H$(L) THEN BIT$(2)=B$(L) 1240 NEXT L:OB$=BIT$(1)+BIT$(2):PRINT:RETURN 1260 REM *** BINARY-TO-HEX CONVERSION *** 1270 FOR L=1 TO 8:BIT$(L)=MID$(OB$,L,1):NEXT L 1280 BIT$=BIT$(1)+BIT$(2)+BIT$(3)+BIT$(4)+BIT$(5)+BIT$(6)+BIT$(7)+BIT$(8) 1290 T1$=LEFT$(BIT$,4):T2$=RIGHT$(BIT$,4):FOR L=1 TO 16 1300 IF T1$=B$(L)THEN HEX$(1)=H$(L) 1310 NEXT L:FOR L=1 TO 16:IF T2$=B$(L) THEN HEX$(2)=H$(L) 1320 NEXT L:IF HEX$(1)="" THEN HEX$(1)=Z$ 1330 OH$=HEX$(1)+HEX$(2):RETURN 1340 REM *** ON/GOTO DATA *** 1350 ON OC GOTO 1510,1560,1570,1580,1590,1600,1610,1650,1690,1730 1360 NR=OC-10:ON NR GOTO 1760,1780,1780,1780,1780,1780,1790,1810,1830,1840 1380 NR=NR-10:ON NR GOTO 1850,1860,1870,1880,1900,1920,1930,1940,1950,1840 1400 NR=NR-10:ON NR GOTO 1850,1860,1870,1880,1900,1920,1930,1940,1950,1950 1420 ON OC GOTO 1970,2100,2170,2250,2320,2390,2450,2550,2650,2750,2810 1430 ON OC GOTO 1970,2350,3250,1780,1780,1780,3200,1780,1780,1780 1440 NR=OC-10:ON NR GOTO 1780,1780,3250,2250,2320,3260,2390,3290,1780,1780 1460 NR=NR-10:ON NR GOTO 2450,2550,2650,3320,2750,3340,3360,2810,1780,1780 1480 NR=NR-10:ON NR GOTO 1780,3390 1500 REM *** IMPLIED-ADDRESS OP-CODE ROUTINES 1510 C=VAL(LEFT$(AB$,1)):AB$=MID$(AB$,2)+Z$:REM *** ASL *** 1520 OB$=AB$:GOSUB 1270:AH$=OH$:OP$=OH$:GOSUB 1030:N=0:Z=0 1530 IF LEFT$(OB$,1)="1"THEN N=1 1540 IF VAL(OD$)=0THEN Z=1 1550 GOTO 3390 1560 B=1:GOTO 3390:REM *** BRK *** 1570 C=0:GOTO 3390:REM *** CLC *** 1580 D=0:GOTO 3390:REM *** CLD *** 1590 I=0:GOTO 3390:REM *** CLI *** 1600 V=0:GOTO 3390:REM *** CLV *** 1610 OH$=XH$:GOSUB 1030:XD=VAL(OD$):REM *** DEX ** 1620 XD=XD-1:IF XD<0 THEN XD=255 1630 OD$=STR$(XD):GOSUB920:XH$=OH$:GOSUB 1190:XB$=OB$ 1640 TMP=XD:GOSUB 3410:GOTO 280 1650 OH$=YH$:GOSUB 1030:YD=VAL(OD$):REM *** DEY *** 1660 YD=YD-1:IF YD<0 THEN YD=255 1670 OD$=STR$(YD):GOSUB 920:YH$=OH$:GOSUB 1190:YB$=OB$ 1680 TMP=YD:GOSUB 3410:GOTO 280 1690 OH$=XH$:GOSUB 1030:XD=VAL(OD$):REM *** INX *** 1700 OD$=STR$(XD):GOSUB 920:XH$=OH$:GOSUB 1190:XB$=OB$ 1710 XD=XD+1:IF XD>255 THEN XD=0 1720 GOTO 1630 1730 OH$=YH$:GOSUB 1030:YD=VAL(OD$):REM *** INY *** 1740 YD=YD+1:IF YD>255 THEN YD=0 1750 GOTO 1670 1760 C=VAL(RIGHT$(AB$,1)):AB$=Z$+LEFT$(AB$,7):REM *** LSR *** 1770 GOTO 1520 1780 GOTO 3390:REM *** NOP,PHA,PHP,PLA AND PLP *** 1790 GOTO 3340:REM *** ROL *** 1810 GOTO 3360:REM *** ROR *** 1830 N=0:V=0:B=0:D=0:I=0:Z=0:C=0:GOTO 280 REM *** RTI *** 1840 (null)T 3390:REM *** RTS *** 1850 C=1:GOTO 3390:REM *** SEC *** 1860 D=1:GOTO 3390;REM *** SED *** 1870 I=1:GOTO 3390:REM *** SEI *** 1880 XH$=AH$:XB$=AB$:OP$=AH$:GOSUB 1030:TMP=VAL(OD$):REM *** TAX *** 1890 GOSUB 3410:GOTO 3390 1900 YH$=AH$:YB$=AB$:OP$=AH$:GOSUB 1030:TMP=VAL(OD$):REM *** TAY *** 1910 GOSUB 3410:GOTO 3390 1920 XH$="00":XB$="00000000":GOSUB 3410:GOTO 3390:REM *** TSX *** 1930 AH$=XH$:AB$=XB$:GOTO 1520:REM *** TXA *** 1940 GOTO 3390:REM *** TXS *** 1950 AH$=YH$:AB$=YB$:GOTO 1520:REM *** TYA *** 1960 REM *** ABSOLUTE-ADDRESS OPERANDS *** 1970 IF D THEN 2950:REM *** ADC *** 1980 OP=VAL(OP$):TMP$=AB$ 1990 GOSUB 1130:PLUS$=OB$ 2000 OH$=AH$:GOSUB 1030:AD$=OD$:AD=VAL(AD$):TMP=AD 2010 AD=AD+OP+C:C=0:IF AD>255 THEN GOSUB 2090 2020 AD$=STR$(AD):OD$=AD$:GOSUB920:AH$=OH$ 2030 GOSUB 1190:AB$=OB$ 2040 N=0:IF AD>127 THEN N=1 2050 Z=0:IF AD=0 THEN Z=1 2060 V=0 2070 IF LEFT$(TMP$,1)=LEFT$(PLUS$,1) AND LEFT$(TMP$,1)<>LEFT$(AB$,1)THEN V=1 2080 OD$=AD$:GOSUB 1030:AH$=OH$:GOTO 280 2090 C=1:AD=AD-256:RETURN 2100 GOSUB 380:REM *** AND *** 2110 FOR L=1 TO 8:BIT$(L)="0":NEXT L 2120 FOR L=1 TO 8:IF B1$(L)="1" AND B2$(L)="1" THEN BIT$(L)="1" 2130 NEXT L 2140 AB$=BIT$(1)+BIT$(2)+BIT$(3)+BIT$(4)+BIT$(5)+BIT$(6)+BIT$(7)+BIT$(8) 2150 OB$=AB$:GOSUB 1270:AH$=OH$ 2160 GOSUB 1030:TMP=VAL(OD$):GOSUB3410:PRINT:GOTO 280 2170 OH$=AH$:GOSUB 1030:AD$=OD$:AD=VAL(AD$):OP=VAL(OP$):REM *** CMP *** 2180 Z=0:IF AD=OP THEN Z=1 2190 N=0:IF OP>AD THEN N=1 2220 C=0:IF AD>OP OR AD=OP THEN C=1 2240 GOTO 3390 2250 OH$=XH$:GOSUB 1030:XD$=OD$:XD=VAL(XD$):OP=VAL(OP$):REM *** CPX *** 2260 Z=0:IF XD=OP THEN Z=1 2280 N=0:IF OP>XD THEN N=1 2300 C=0:IF XD>OP OR XD=OP THEN C=1 2310 GOTO 3380 2320 OH$=YH$:GOSUB 1030:YD$=OD$:YD=VAL(YD$):OP=VAL(OP$):REM *** CPY *** 2330 Z=0:IF YD=OP THEN Z=1 2340 N=0:IF OP>YD THEN N=1 2350 C=0:IF YD>OP OR YD=OP THEN C=1 2380 GOTO 3380 2390 GOSUB 380:REM *** EOR *** 2400 FOR L=1 TO 8:BIT$(L)=Z$:NEXT L 2410 FOR L=1 TO 8:IF B1$(L)="1" AND B2$(L)="1" THEN BIT$(L)="0":GOTO 2440 2420 IF B1$(L)="1" OR B2$(L)="1" THEN BIT$(L)="1" 2440 NEXT L:GOTO 2140 2450 IF D=1 THEN 2480:REM *** LDA *** 2460 OD$=OP$:GOSUB 920:AH$=OH$:GOSUB 1190:AB$=OB$ 2470 TMP=VAL(OP$):GOSUB 3410:GOTO 280 2480 IF FLAG$="AD" AND VAL(OP$)>99 THEN 300 2490 IF FLAG$<>"AD" THEN OD$=OP$:GOSUB 920:AH$=OH$:GOTO 2530 2500 IF LEN(OP$)=1 THEN OP$=Z$+OP$ 2510 AH$=OP$:OH$=AH$:GOTO 2530 2520 OD$=OP$:GOSUB 920:AH$=OH$ 2530 GOSUB 1190:AB$=OB$ 2540 TMP=VAL(OP$):GOSUB 3410:GOTO 2470 2550 IF D=1 THEN 2580:REM *** LDX *** 2560 OD$=OP$:GOSUB 920:XH$=OH$:GOSUB 1190:XB$=OB$ 2570 TMP=VAL(OP$):GOSUB 3410:GOTO 280 2580 IF FLAG$="AD" AND VAL(OP$)>99 THEN 300 2590 IF FLAG$<>"AD" THEN OD$=OP$:GOSUB 920:XH$=OH$:GOTO 2630 2600 IF LEN(OP$)=1 THEN OP$=Z$+OP$ 2610 XH$=OP$:OH$=XH$:GOTO 2630 2620 OD$=OP$:GOSUB 920:XH$=OH$ 2630 GOSUB 1190:XB$=OB$ 2640 TMP=VAL(OP$):GOSUB 3410:GOTO 2570 2650 IF D=1 THEN 2680:REM *** LDX *** 2660 OD$=OP$:GOSUB 920:YH$=OH$:GOSUB 1190:YB$=OB$ 2670 TMP=VAL(OP$):GOSUB 3410:GOTO 280 2680 IF FLAG$="AD" AND VAL(OP$)>99 THEN 300 2690 IF FLAG$<>"AD" THEN OD$=OP$:GOSUB 920:YH$=OH$:GOTO 2730 2700 IF LEN(OP$)=1 THEN OP$=Z$+OP$ 2710 YH$=OP$:OH$=YH$:GOTO 2730 2720 OD$=OP$:GOSUB 920:XH$=OH$ 2730 GOSUB 1190:YB$=OB$ 2740 TMP=VAL(OP$):GOSUB 3410:GOTO 2670 2750 GOSUB 380:REM *** ORA *** 2760 FOR L=1 TO8:IF B1$(L)="1" OR B2$(L)="1" THEN BIT$(L)="1" 2770 NEXT L:AB$="":FOR L=1 TO 8:AB$=AB$+BIT$(L):NEXT L 2790 OB$=AB$:GOSUB 1270:AH$=OH$ 2800 GOSUB 1030:TMP=VAL(OD$):GOSUB3410:GOTO 3390 2810 IF D THEN 3060:REM *** SBC *** 2820 OP=VAL(OP$):TMP$=AB$ 2830 GOSUB 1130:MI$=OB$ 2840 OH$=AH$:GOSUB 1030:AD$=OD$:AD=VAL(AD$):TMP=AD 2850 AD=AD-OP:IF C=0 THEN AD=AD-1 2860 IF AD<0 THEN AD=256+AD:C=0 2870 AD$=STR$(AD):OD$=AD$:GOSUB 920:AH$=OH$ 2880 GOSUB 1190:AB$=OB$ 2890 N=0:IF AD>127 THEN N=1 2900 Z=0:IF AD=0 THEN Z=1 2910 V=0:IF LEFT$(TMP$,1)=LEFT$(MI$,1) THEN 2930 2920 IF LEFT$(AB$,1)=LEFT$(TMP$,1) THEN V=1 2930 OD$=AD$:GOSUB 1030:AH$=OH$:GOTO 280 2940 REM *** BCD ADDITION ROUTINE *** 2950 IF FLAG$<>"AD" THEN 1980 2960 IF LEFT$(AH$,1)>"9" OR RIGHT$(AH$,1)>"9" THEN 3030 2970 AD=VAL(AH$) 2980 OP=VAL(OP$):AD=AD+OP+C:C=0 2990 GOSUB 1030:TMP=VAL(OD$):GOSUB 3410 3000 IF AD>99 THEN GOSUB 3040 3010 AH$=STR$(AD):IF LEN(AH$)=1 THEN AH$=Z$+AH$ 3020 OH$=AH$:GOSUB 1190:AB$=OB$:GOTO 280 3030 OH$=AH$:GOSUB 1030:AD$=OD$:AD=VAL(AD$):GOTO 2980 3040 C=1:AD=AD-100:RETURN 3050 REM *** BCD SUBTRACTION ROUTINE *** 3060 IF FLAG$<>"AD" THEN 2820 3070 IF LEFT$(AH$,1)>"9" OR RIGHT$(AH$,1)>"9" THEN 3120 3080 AD=VAL(AH$):OP=VAL(OP$):AD=AD-OP:IF C=0 THEN AD=AD-1 3100 IF AD<0 THEN GOSUB 3130 3110 GOTO 3010 3120 OH$=AH$:GOSUB 1030:AD$=OD$:AD=VAL(AD$):GOTO 3090 3130 C=0:AD=100+AD:RETURN 3140 REM *** IMMEDIATE-ADDRESS ROUTINES *** 3150 OD$=OP$:GOSUB 920:GOSUB 1190:REM *** ASL *** 3160 C=VAL(LEFT$(OB$,1)):OB$=MID$(OB$,2)+Z$ 3170 GOSUB 1270:GOSUB 1030:X=VAL(OD$):N=0:IF X<0 THEN N=1 3180 Z=0:IF X=0 THEN Z=1 3190 GOTO 280 3200 GOSUB 1030:AD=VAL(OD$):REM *** BIT *** 3210 GOSUB 1130:N=VAL(LEFT$(OB$,1)):V=VAL(MID$(OB$,2,1)) 3220 GOSUB 400:Z=1:FOR L=1 TO 8 3230 IF B1$(L)="1" AND B2$="1" THEN Z=0 3240 NEXT L:GOTO 3390 3250 GOTO 2170 3260 OP=VAL(OP$):OP=OP-1:IF OP<0 THEN N:REM *** DEC *** 3270 IF OP=0 THEN Z=1 3280 GOTO 3390 3290 OP=VAL(OP$):OP=OP+1:IF OP<0 THEN N=1:REM *** INC *** 3300 IF OP=Z THEN Z=1 3310 GOTO 3390 3320 OD$=OP$:GOSUB 920:GOSUB 1190 3330 C=VAL(RIGHT$(OB$,1)):OB$=Z$+LEFT$(OB$,7):GOTO 3170 3340 IF C=1 THEN J$="1":REM *** ROL *** 3341 IF C=0 THEN J$="0" 3342 C=VAL(LEFT$(AB$,1)):AB$=RIGHT$(AB$,7)+J$ 3350 OB$=AB$:GOSUB 1270:AH$=OH$:OP$=OH$:GOSUB 1030:N=0:Z=0 3355 IF LEFT$(OB$,1)="1" THEN N=1 3356 IF VAL(OD$)=0THEN Z=1 3357 GOTO 3390 3360 IF C=1 THEN J$="1":REM *** ROR *** 3365 IF C=0 THEN J$=Z$ 3370 C=VAL(RIGHT$(AB$,1)):AB$=J$+LEFT$(AB$,7) 3371 GOTO 3350 3380 REM *** PRINT LINE SPACE & GET ANOTHER LINE *** 3390 PRINT:GOTO 280 3400 REM *** SET Z AND N FLAGS *** 3410 N=0:IF TMP>127 THEN N=1 3420 Z=0:IF TMP=0 THEN Z=1 3430 RETURN